import pagerTpl from "../views/pager.art";

export default function pageHelper(promise, endCallback = null, pageNum = 1, pageSize = 5) {
    // promise: 请求数据的接口, 并使用Promise封装
    // endCallback: 以上结点生成完后需要做的事情
    //              比如说需要绑定事件到上面生成的节点中
    //                  或者要做一些什么后续的处理
    promise().then(result => {
        let pages = result.pages
        let total = Math.ceil(pages.length / pageSize)
        let pager = new Array(total === 0 ? 1 : total)
        let start = (pageNum - 1) * pageSize
        $(result.id).html(result.template({pages: pages.slice(start, start + pageSize)}))
        // 加载分页器
        $('#pager').html(pagerTpl({pager}))
        // 选中当前的的分页页码
        $($('#pager ul li')[pageNum]).addClass('active')
        _userListPageHelperEventSet(promise, endCallback)
        // 最后还需要做的事情, 如果有就执行, 没有就算了
        if( endCallback )
            endCallback()
    })
}

const _userListPageHelperEventSet = (promise, endCallback) => {
    // 挂载分页器的事件
    $('#pager ul li:not(:first-child,:last-child)').on('click', function(e) {
        $(this).addClass('active').siblings().removeClass('active')
        pageHelper(promise, endCallback, $(this)[0].innerText)
    })
    // 挂载分页器箭头的翻页事件
    $('#pager ul li:first').on('click', function(e) {
        let currentPageNum = $('#pager ul li[class="active"]')[0].innerText
        pageHelper(promise, endCallback, --currentPageNum > 0 ? currentPageNum : 1)
    })
    $('#pager ul li:last').on('click', function(e) {
        let currentPageNum = $('#pager ul li[class="active"]')[0].innerText
        let totalPage = $('#pager ul li').length - 2
        pageHelper(promise, endCallback, ++currentPageNum < totalPage ? currentPageNum : totalPage)
    })
}

